package cn.wolfcode.crm.mapper;

import cn.wolfcode.crm.domain.GuaranteeBill;
import cn.wolfcode.crm.domain.Product;
import cn.wolfcode.crm.query.GuaranteeBillQueryObject;
import cn.wolfcode.crm.query.QueryObject;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface GuaranteeBillMapper {

    int deleteByPrimaryKey(Long id);
    /**
     * @Description: 删除当前保单
     * @Param: [id] 根据id删除保单
     * @return: int 返回受到影响的行数
     */

    int insert(GuaranteeBill record);
    /**
     * @Description: 保存当前保单
     * @Param: [record] 需要保存的保单信息
     * @return: int 返回受到影响的行数
     */

    GuaranteeBill selectByPrimaryKey(Long id);
    /**
     * @Description: 查询当前保单信息
     * @Param: [id] 根据当前id查询保单信息
     * @return: cn.wolfcode.crm.domain.GuaranteeBill
     */

    List<GuaranteeBill> selectAll();
    /**
     * @Description: 查询所有保单信息
     * @Param: []
     * @return: java.util.List<cn.wolfcode.crm.domain.GuaranteeBill>
     */

    int updateByPrimaryKey(GuaranteeBill record);
    /**
     * @Description: 更新当前保单信息
     * @Param: [record] 需要更新的保单信息
     * @return: int 返回受到影响的行数
     */

    int queryForCount(QueryObject qo);
    /**
     * @Description: 查询保单总条数
     * @Param: [qo] 传入查询参数
     * @return: int 返回受到影响的行数
     */

    List<GuaranteeBill> queryForList(QueryObject qo);
    /**
     * @Description: 查询当前页面的所有的保单数据
     * @Param: [qo] 传入查询参数
     * @return: java.util.List<cn.wolfcode.crm.domain.GuaranteeBill>
     */

    GuaranteeBill getBillBySn(String snNumber);
    /**
     * @Description: 查询保单信息
     * @Param: [snNumber] 根据当前保单编码查询保单信息
     * @return: cn.wolfcode.crm.domain.GuaranteeBill
     */

    void updateBill(GuaranteeBill guaranteeBill);
    /**
     * @Description: 编辑暂存单信息
     * @Param: [guaranteeBill] 需要编辑的暂存单信息
     * @return: void
     */

    void changeStateUnaudited(Long id);

    /**
     * @Description: 编辑当前暂存单的状态为待审核状态
     * @Param: [id] 根据当前id来决定要修改的状态的保单对象
     * @return: void
     */

    void changeBillState(String number);
    /**
     * @Description: 拒保方法,改变当前保单的状态
     * @Param: [number] 根据当前保单编码改变当前保单状态
     * @return: void
     */

    void backToChangeBill(@Param("number")String number, @Param("info")String info);
    /**
     * @Description: 退回单状态
     * @Param: [number, info] 传入当前保单编码查询当前保单,传入备注信息,设置保单状态
     * @return: void
     */


    GuaranteeBill queryInfo(Long id);
    /**
     * @Description: 查询当前保单的修改意见
     * @Param: [id] 根据id查询当前保单的修改意见
     * @return: cn.wolfcode.crm.domain.GuaranteeBill
     */

    void changeStateSuccessfulAudit(GuaranteeBill guaranteeBill);

    /**
     * @Description: 改变当前保单的状态为已审核装填
     * @Param: [guaranteeBill] 需要改变的当前保单状态
     * @return: void
     */

    int queryHistoryForCount(GuaranteeBillQueryObject qo);
    /**
     * @Description: 查询单据历史记录的总条数
     * @Param: [qo] 传入查询参数
     * @return: int 返回受到影响的行数
     */

    List<GuaranteeBill> queryHistoryForList(GuaranteeBillQueryObject qo);
    /**
     * @Description: 查询单据历史记录当前页的总内容
     * @Param: [qo] 传入查询参数
     * @return: java.util.List<cn.wolfcode.crm.domain.GuaranteeBill>
     */

    void updateHistoryBillState(GuaranteeBill guaranteeBill);
    /**
     * @Description: 更新保单状态为已缴费状态
     * @Param: [guaranteeBill] 传入需要更新的保单
     * @return: void
     */







   GuaranteeBill selectbyClientId(Long id);
    /**
     * @Description: 根据客户id获取所有保单
     * @Param: [guaranteeBill] 返回保单集合
     * @return: void
     */

    GuaranteeBill queryForInformationByApplicationId(Long id);




}